freeslot("MT_XXNG") 

local function SHGlassShatter(s, v)

	if not (v and v.valid) 
	or s.amshattered 
	or (v.type == s.type) 
	return false 
	end
	
	if v.player 
	local p = v.player 
		
		for d = 1,14
			local shards = P_SpawnMobj(v.x+(P_RandomRange(-50,50)*v.scale), v.y+(P_RandomRange(-50,50)*v.scale), v.z+(P_RandomRange(5,90)*v.scale), MT_WOODDEBRIS)
			
			if shards and shards.valid 
			
				shards.flags = $|MF_BOUNCE|MF_GRENADEBOUNCE|MF_NOCLIPTHING 

				P_InstaThrust(shards, v.angle+(P_RandomRange(-25,25)*ANG1), p.speed+8*v.scale)
				P_SetObjectMomZ(shards, (P_RandomRange(-4,8)*v.scale)+v.momz, false)
			
				shards.sprite = SPR_XXNG
				shards.frame = (P_RandomRange(D,E))|TR_TRANS40
				shards.rollangle = P_RandomRange(0,359)*ANG1
			end		
		end
		if (p == displayplayer) 
			P_StartQuake(40*FRACUNIT, 4)
		end
		
	else 
		for d = 1,18
			local shards = P_SpawnMobj(v.x+(P_RandomRange(-50,50)*v.scale), v.y+(P_RandomRange(-50,50)*v.scale), v.z+(P_RandomRange(5,80)*v.scale), MT_WOODDEBRIS)
			if shards and shards.valid 
				shards.flags = $|MF_BOUNCE|MF_GRENADEBOUNCE|MF_NOCLIPTHING 
				P_InstaThrust(shards, v.angle+(P_RandomRange(-25,25)*ANG1), 11*v.scale) 
				shards.momx = $+v.momx
				shards.momy = $+v.momy
				P_SetObjectMomZ(shards, (P_RandomRange(-4,8)*v.scale)+v.momz, false) 	
				shards.sprite = SPR_XXNG
				shards.frame = (P_RandomRange(D,E))|TR_TRANS40
			end		
		end				
	end	

	s.amshattered = true 
	return false 
	
end

addHook("TouchSpecial", SHGlassShatter,  MT_XXNG)